package com.sz.virtualbank.service.user;

import com.sz.virtualbank.dao.entity.User;

/**
 * 用户服务接口
 * 
 * @author Claude
 */
public interface UserService {
    
    /**
     * 用户注册
     *
     * @param username 用户名
     * @param password 密码
     * @param phone 手机号
     * @param validCode 验证码
     * @return 注册成功的用户令牌
     */
    String register(String username, String password, String phone, String validCode);
    
    /**
     * 用户登录
     *
     * @param username 用户名或手机号
     * @param password 密码
     * @return 登录成功的用户令牌
     */
    String login(String username, String password);
    
    /**
     * 用户登出
     *
     * @param token 用户令牌
     */
    void logout(String token);
    
    /**
     * 根据令牌获取当前用户
     *
     * @param token 用户令牌
     * @return 当前用户信息
     */
    User getCurrentUser(String token);
    
    /**
     * 更新用户信息
     *
     * @param user 用户信息
     * @return 更新后的用户信息
     */
    User updateUserInfo(User user);
    
    /**
     * 修改密码
     *
     * @param userId 用户ID
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return 是否修改成功
     */
    boolean changePassword(Long userId, String oldPassword, String newPassword);
    
    /**
     * 发送验证码
     *
     * @param phone 手机号
     */
    void sendVerificationCode(String phone);
    
    /**
     * 忘记密码重置
     *
     * @param phone 手机号
     * @param validCode 验证码
     * @param newPassword 新密码
     * @return 重置成功的用户令牌
     */
    String resetPassword(String phone, String validCode, String newPassword);
}
